#include "echo.h"
#include "tcpserver.h"

EchoServer::EchoServer(tiny_muduo::EventLoop* loop,const tiny_muduo::Address& list):
    loop_(loop),server_(loop,listen_addr){
        server_SetConnectionCallback(std::bind(&EchoServer::ConnectionCallback,this,_1));
        server_.SetMessageCallback(std::bind(&EchoServer::MessageCallback,this,_1));
    }

/*
这个cpp文件很简短，但却包含一个很重要的C++语法，C++的bind函数
C++的bind函数其实就是c语言回调函数的作用，但是比c的那个函数指针的那种语法上更简单更好用(虽然有人测试比函数指针慢一些)

bind函数的返回值是std::function<返回类型(参数1类型，参数2类型)>，function也是C++为了完成更简便的回调函数机制引入的新特性
bind的参数，第一个数 &加函数名(表示函数地址)，后面是函数所需的参数，比如:
std::bind(&three_plus,placeholders::_1, placeholders::_2, x)
这里的_1,_2是占位符，意思是如果要用这个bind返回的函数的话，把参数传进去分别会落到_1,_2的位置。

不过你会发现不对呀，怎么本文件里的&EchoServer::MessageCallback明明只有一个参数，为什么后面传了this和_1两个参数呢？
这是因为上面说的传函数名传参数都是针对普通函数，而c++的类函数有些区别
C++ 成员函数都有一个隐含参数this指针.bind的第一个参数是函数的地址，但是类函数bind无法直接获取到地址，所以bind的第一个参数
要加一个&,同时第二个参数要传入this指针，这样才能得到类函数的一切调用

至此，终于理解了上面这短短两行代码，呜呜
*/